package com.hycc.base;

public class LamdaPractice {

    //静态内部类
    static class Lamda2 implements Lamda{
        @Override
        public void lamdaDo() {
            System.out.println("静态内部类");
        }
    }

    public static void main(String[] args) {

        Lamda lamda;

        /*//实现类
        lamda = new Lamda1();
        lamda.lamdaDo();*/

        /*//静态内部类
        lamda = new Lamda2();
        lamda.lamdaDo();*/

        /*//局部内部类
        //局部内部类
        class Lamda3 implements Lamda{
            @Override
            public void lamdaDo() {
                System.out.println("局部内部类");
            }
        }
        lamda = new Lamda3();
        lamda.lamdaDo();*/

        /*//匿名内部类
        //没有类的名称，必须借助接口或者父类
        lamda = new Lamda() {
            @Override
            public void lamdaDo() {
                System.out.println("匿名内部类");
            }
        };
        lamda.lamdaDo();*/

        //lamda表达式
        lamda = ()->{
            System.out.println("lamda表达式");
        };
        lamda.lamdaDo();

    }
}


//定义接口
interface Lamda{
    //隐式转换定义为 public abstract void lamdaDo();
    void lamdaDo();
}

//实现类
class Lamda1 implements Lamda{
    @Override
    public void lamdaDo() {
        System.out.println("实现类");
    }
}
